Multi-Activity App তৈরি করা এবং Data Passing
একটি Multi-Activity App এমন একটি অ্যাপ্লিকেশন যা একাধিক Activity ব্যবহার করে। Android অ্যাপ্লিকেশনগুলো প্রায়ই একাধিক Activity নিয়ে গঠিত হয় যেখানে প্রতিটি Activity একটি স্বতন্ত্র UI এবং কার্যকারিতা প্রদান করে। এক Activity থেকে অন্য Activity তে যাওয়ার জন্য এবং ডেটা পাস করার জন্য Intent ব্যবহার করা হয়। Intent এর মাধ্যমে আপনি এক Activity থেকে অন্য Activity তে ডেটা পাঠাতে পারেন, যেমন টেক্সট, সংখ্যা, বা অন্য কোনো তথ্য।
নিচে Multi-Activity App তৈরি করা এবং Data Passing নিয়ে বিস্তারিত আলোচনা করা হলো:
ধাপ ১: নতুন Activity তৈরি করা
প্রথমে আপনার MainActivity থাকবে যা অ্যাপ্লিকেশনের প্রধান স্ক্রিন হিসেবে কাজ করবে। এরপর, একটি নতুন Activity তৈরি করুন যা আপনি SecondActivity হিসেবে ব্যবহার করবেন। Android Studio তে নতুন Activity যোগ করতে:
- File -> New -> Activity -> Empty Activity।
- Activity এর নাম দিন, যেমন SecondActivity।
ধাপ ২: XML লেআউট তৈরি করা
MainActivity এবং SecondActivity এর জন্য XML লেআউট ফাইল তৈরি করা হবে। নিচে একটি উদাহরণ দেওয়া হলো:
MainActivity এর লেআউট (activity_main.xml):
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/inputText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter some text" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go to Second Activity" />
</LinearLayout>
SecondActivity এর লেআউট (activity_second.xml):
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/receivedText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No data received" />
</LinearLayout>
ধাপ ৩: MainActivity এ Intent ব্যবহার করে Data Passing করা
MainActivity থেকে SecondActivity তে Intent ব্যবহার করে ডেটা পাঠানো হবে। Intent হল Android এর একটি কম্পোনেন্ট, যা Activity, Service, এবং অন্যান্য কম্পোনেন্টের মধ্যে যোগাযোগ স্থাপন করতে ব্যবহৃত হয়।
MainActivity.java:
java
Copy code
public class MainActivity extends AppCompatActivity {
private EditText inputText;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inputText = findViewById(R.id.inputText);
button = findViewById(R.id.button);
button.setOnClickListener(v -> {
String text = inputText.getText().toString();
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("key", text);
startActivity(intent);
});
}
}
এখানে onClickListener ব্যবহার করে Button এ ক্লিক করলে Intent তৈরি করা হচ্ছে। Intent.putExtra() মেথড ব্যবহার করে আমরা ডেটা (টেক্সট) পাস করছি, এবং startActivity() এর মাধ্যমে SecondActivity চালু করছি।
ধাপ ৪: SecondActivity তে Data গ্রহণ করা
SecondActivity তে Intent থেকে পাঠানো ডেটা গ্রহণ করতে getIntent().getStringExtra() মেথড ব্যবহার করা হয়।
SecondActivity.java:
public class SecondActivity extends AppCompatActivity {
private TextView receivedText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
receivedText = findViewById(R.id.receivedText);
// Intent থেকে ডেটা গ্রহণ করা
Intent intent = getIntent();
String receivedData = intent.getStringExtra("key");
// ডেটা TextView তে সেট করা
if (receivedData != null) {
receivedText.setText(receivedData);
}
}
}
এখানে, SecondActivity তে Intent থেকে getStringExtra() মেথড ব্যবহার করে ডেটা গ্রহণ করা হচ্ছে। তারপর সেই ডেটা TextView তে সেট করা হয়েছে।
ধাপ ৫: AndroidManifest.xml এ নতুন Activity যুক্ত করা
প্রতিটি নতুন Activity তৈরি করার পরে AndroidManifest.xml ফাইলে তা যুক্ত করতে হবে। সাধারণত, Android Studio নিজেই এটি যুক্ত করে, তবে আপনি নিশ্চিত করতে পারেন:
<activity android:name=".SecondActivity"></activity>
উপসংহার
এই উদাহরণের মাধ্যমে, আমরা দেখলাম কিভাবে এক Activity থেকে অন্য Activity তে Intent ব্যবহার করে ডেটা পাঠানো যায় এবং সেই ডেটা গ্রহণ করা যায়। Intent এর মাধ্যমে বিভিন্ন ধরনের ডেটা যেমন String, Integer, Boolean ইত্যাদি পাঠানো যায়।
Advanced Data Passing Techniques
Intent এর মাধ্যমে কেবল Primitive ডেটা নয়, বরং Object, ArrayList, এবং Parcelable বা Serializable অবজেক্টও পাঠানো যায়। নিচে কয়েকটি উদাহরণ দেওয়া হলো:
১. Parcelable Object পাঠানো
Parcelable হল Android এর জন্য একটি Object Serialization টেকনিক, যা ডেটা দ্রুত পাস করার জন্য ব্যবহার করা হয়।
MyData.java (Parcelable Object):
public class MyData implements Parcelable {
private String name;
private int age;
public MyData(String name, int age) {
this.name = name;
this.age = age;
}
protected MyData(Parcel in) {
name = in.readString();
age = in.readInt();
}
public static final Creator<MyData> CREATOR = new Creator<MyData>() {
@Override
public MyData createFromParcel(Parcel in) {
return new MyData(in);
}
@Override
public MyData[] newArray(int size) {
return new MyData[size];
}
};
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
@Override
public int describeContents() {
return 0;
}
// Getters for name and age
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
MainActivity থেকে Parcelable পাঠানো:
MyData myData = new MyData("John", 25);
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("myData", myData);
startActivity(intent);
SecondActivity তে Parcelable গ্রহণ:
MyData myData = getIntent().getParcelableExtra("myData");
if (myData != null) {
String displayText = "Name: " + myData.getName() + ", Age: " + myData.getAge();
receivedText.setText(displayText);
}
উপসংহার
একটি Multi-Activity অ্যাপ তৈরি করা এবং Activity গুলোর মধ্যে ডেটা পাস করা Android ডেভেলপমেন্টের একটি মৌলিক বিষয়। Intent ব্যবহার করে আপনি সহজেই ডেটা পাস করতে পারেন, এবং Parcelable এর মাধ্যমে জটিল Object গুলোও Activity এর মধ্যে পাঠাতে পারেন। Intent এর সঠিক ব্যবহার একটি অ্যাপ্লিকেশনকে আরও ইন্টারঅ্যাকটিভ এবং ব্যবহারবান্ধব করতে সাহায্য করে।
Read more